% -*- coding:utf-8 -*-

\section{Introducción}
Las siguientes secciones del documento contienen la especificación de un lenguaje
diseñado para la generación de diagramas de redes a partir de un archivo
con la especificación de una topología de red así como la
implementación del compilador encargado de generar los diagramas.

El objetivo de los diagramas generados por la aplicación es su uso
para la creación de exámenes y ejercicios sobre Redes de Computadores.

\section{Especificación del Problema}
Durante la realización de esta práctica el problema abordado a
consistido en la generación de diagramas de red (como el mostrado en
la figura ~\ref{fig:ejemplo})\footnote{El diagrama generado no tiene que ser
  obligatoriamente igual a la figura mostrada. Se utiliza solamente
  como ejemplo a título ilustrativo.} a partir de una especificación del mismo
en un archivo de código fuente. Además, el compilador generará tablas
en formato \LaTeX para ser incluídas dentro de cualquier documento. Se espera que esta herramienta sea
útil al profesorado para realizar cuestiones o explicaciones sobre
redes.

La aplicación se utilizará por línea de comandos, como cualquier otro
compilador, de modo que pueda integrarse con herramientas para la
compilación automática como puede ser \emph{Make}. De éste modo el
archivo que contiene el código fuente puede distribuirse como parte de
un documento mayor (por ejemplo escrito en \LaTeX) tratándose los
archivos generados por el compilador como dependencias del archivo
fuente original, con lo que la compilación será automática.

\begin{figure}[!h]
\label{fig:ejemplo}
\centering
\includegraphics[width=14cm]{./images/ejemplo.png}
\caption{Diagrama de salida de ejemplo.}
\end{figure}



La idea consiste en que a través de un lenguaje determinado se pueda
generar de manera rápida y precisa diversa información sobre
la red a analizar, tal como la propia topología de la red o las
tablas de enrutamiento, las cuales podrían ser completadas por el
alumno con la información que se le solicite o por
el contrario mostrar las mismas tablas completadas con la información
pertinente para la resolución de problemas.

\clearpage

La especificación del lenguaje de entrada está basada en la documentación del
comando \emph{IP} \cite{ipCommand}. Un ejemplo de código puede verse
en el listado ~\ref{lst:example1}. A partir de dicho código se
obtendrán el diagrama y las tablas comentadas anteriormente.

\lstset{
        basicstyle=\small,
        tabsize=2,
        commentstyle=\color{blue},
        keywordstyle=\bfseries,
        identifierstyle=\ttfamily,
        breaklines,
        captionpos=t,
        showstringspaces=false,
        extendedchars=true,
        frame=trBL,
	frameround=shadowbox
        xleftmargin=1.0cm,
        xrightmargin=0.5cm,
      }
\lstinputlisting[numbers=left]{./snippets/example1.net}
\begin{lst}
\label{lst:example1}
\caption{Archivo de entrada al compilador}
\end{lst}
